﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZaidimasSandelys.CustomDrawTools;
using ZaidimasSandelys.Models.Interfaces;

namespace ZaidimasSandelys.Models.DataStructures
{
    /// <summary>
    /// Leidžiant procesus asinchroniškai leidžia paduoti TIK 1 paramtrą. 
    /// Norint perduoti daugiau paramtrų, sukuriama paildoma klasė.
    /// <code>BackgroundWorker</code> leidžia perduoti tik vieną parametrą, todėl parametraik pakuojami į objektą
    /// </summary>
    public class LoadAsyncRequest
    {
        public int GameId { get; private set; }
        public VisualType ElementType { get; private set; }

        public LoadAsyncRequest(int gameId, VisualType elementType)
        {
            this.GameId = gameId;
            this.ElementType = elementType;
        }
    }

    public class LoadAsyncResponce: LoadAsyncRequest
    {
        public IEnumerable<IGameElement> Collection { get; set; }

        public LoadAsyncResponce(int gameId, VisualType elementType) : base(gameId, elementType)
        {
            this.Collection = null;
        }
        public LoadAsyncResponce(LoadAsyncRequest request) : this(request.GameId, request.ElementType)
        { }
    }
}
